package cn.itcast.web.controller.system;

import cn.itcast.domain.system.Dept;
import cn.itcast.service.system.DeptService;
import cn.itcast.web.controller.BaseController;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Controller
@RequestMapping("/system/dept")
public class DeptController extends BaseController {

	@Autowired
	private DeptService deptService;

	/**
	 * 查询部门列表
	 *     分页
	 */
	@RequestMapping("/list")
	public String list(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int size) {

		String companyId="1";// 登陆用户所属的企业ID，模拟=1

		//1.调用service查询
		/**
		 * 查询参数：
		 *      page，size，所属企业id
		 */
		PageInfo info = deptService.findAll(page,size,companyId);
		//2.将分页的对象存入request
		request.setAttribute("page",info);
		return "system/dept/dept-list";
	}

	/**
	 * 进入保存页面
	 *  <select>
	 *      <c:forEach items="${deptList}" var="dept">
	 *           <option value="${dept.id}">${dept.deptName}</option>
	 *      </c:forEach>
	 *
	 *  </select>
	 *
	 *
	 */
	@RequestMapping("/toAdd")
	public String toAdd() {
		String companyId="1";// 登陆用户所属的企业ID，模拟=1
		//查询所有的部门，构造父部门下拉框
		List deptList = deptService.findAll(companyId);
		request.setAttribute("deptList",deptList);
		return "system/dept/dept-add";
	}

	/**
	 * 进入修改页面
	 *      参数：部门id
	 *      业务：
	 *          1.根据id查询部门
	 *          2.查询所有的部门，为了构造下拉框数据
	 */
	@RequestMapping("/toUpdate")
	public String toUpdate(String id) {
		//1.根据id查询部门
		Dept dept = deptService.findById(id);
		request.setAttribute("dept",dept);
		//2.查询所有的部门，为了构造下拉框数据
		String companyId="1";
		List deptList = deptService.findAll(companyId);
		request.setAttribute("deptList",deptList);
		return "system/dept/dept-update";
	}



	/**
	 * 保存或者更新
	 *      参数 ： Dept
	 *      业务：
	 *          1.传递企业属性
	 *          2.根据id判断
	 *              2.1 没有id：保存
	 *              2.2 有id，更新
	 *      页面跳转：
	 *          重定向到list列表
	 */
	@RequestMapping("/edit")
	public String edit(Dept dept) {
		String companyId="1";// 登陆用户所属的企业ID，模拟=1
		String companyName="传智播客";
		//1.传递企业属性
		dept.setCompanyId(companyId);
		dept.setCompanyName(companyName);
		//2.根据id判断
		if(StringUtils.isEmpty(dept.getId())) {
			//2.1 没有id：保存
			deptService.save(dept);
		}else{
			//2.2 有id，更新
			deptService.update(dept);
		}
		return "redirect:/system/dept/list.do";
	}

	/**
	 * 根据id删除部门
	 *  参数：部门id
	 *  业务：调用service删除
	 */
	@RequestMapping("/delete")
	public String delete(String id) {
		deptService.delete(id);
		return "redirect:/system/dept/list.do";
	}
}
